package com.shujia.jichu

import java.util.Scanner
import scala.util.control.Breaks._ // _相当于java中的*

object Demo2Base {
  def main(args: Array[String]): Unit = {
    /**
     * 基本数据类型：
     * scala：                    java：
     * Byte                      byte
     * Short                     short
     * Int                       int
     * Long                      long
     * Float                     float
     * Double                    double
     * Boolean                   boolean
     * Char                      char
     *
     * 如何定义一个变量  var
     * 注：scala中的变量可以做自动类型推断
     */
    //将数值100赋值给一个变量
    var a1: Int = 100 //标准明确数据类型定义变量  var 变量名: 数据类型 = 值
    println(a1.getClass)
    a1 = 200
    println(a1.getClass)
    //    var s1: String = "hello world"
    //    println(s1.getClass)

    /**
     * 定义常量  val
     * val 变量名: 数据类型 = 值
     */
    val pi: Double = 3.14
    println(pi)
    println(pi.getClass)
    //    pi = 100.4

    println("=" * 50)

    /**
     * 字符串：String
     * 1、scala中的字符串与java中的字符串指的是同一个，java中String类中的方法在scala中都可以进行使用
     * 2、scala与java是互相兼容的
     */
    val s1: String = "java,scala,spark"
    println(s1)
    println("=" * 50)
    //split
    val res1: Array[String] = s1.split(",")
    //    println(res1)
    println(res1(0))
    println(res1(1))
    println(res1(2))
    println("=" * 50)
    /**
     * 字符串拼接
     * 1、+拼接 这种方式特别消耗性能的
     * 2、StringBuilder或者StringBuffer
     * 3、利用scala中的方法进行拼接
     * 4、scala中也提供了一个类似拼接的方式语法 s"${xx}"
     */
    val res2: String = res1(0) + "|" + res1(1) + "|" + res1(2)
    println(res2)
    println("=" * 50)
    //2、StringBuilder或者StringBuffer
    val sb1: StringBuilder = new StringBuilder()
    sb1.append(res1(0))
      .append("|")
      .append(res1(1))
      .append("|")
      .append(res1(2))
    println(sb1)
    println("=" * 50)
    //3、利用scala中的方法进行拼接
    val res3: String = res1.mkString("|") // 底层还是使用java中的StringBuilder拼接字符串
    println(res3)
    println("=" * 50)
    res1(1) = "hadoop"
    println(res1.mkString("|"))

    val res4 = s"${res1(0)}_${res1(1)}_${res1(2)}" // 底层还是使用java中的StringBuilder拼接字符串
    println(res4)

    println("=" * 50)
    /**
     * 运算符
     */
    val i1 = 100
    val i2 = 3
    println(i1 + i2)
    println(i1 - i2)
    println(i1 * i2)
    println(i1 / i2)
    println(i1 % i2)

    println("=" * 50)

    /**
     * 流程控制
     * 选择语句
     * 循环语句
     * 注：
     * 1、scala语法中不支持++或者--
     * 2、scala中没有像java的普通for循环
     */
    //if..else
    val sc = new Scanner(System.in)
    print("请输入学生的年龄: ")
    val age: Int = sc.nextInt()
    if (age < 18) {
      println("未成年")
    } else {
      println("成年")
    }

    //创建一个数组
    val array1: Array[Int] = Array(11, 22, 33, 44, 55)
    var a9 = 0
    //    a9++  // 不支持
    //    a9 = a9+1
    //    a9+=1
    //
    //循环语句
    //    for(var i:Int=0;i<res1.length;i+=1){
    //
    //    }
    //while循环或者do..while
    println("=" * 50)
    var i: Int = 0
    while (i < array1.length) {
      println(array1(i))
      i += 1
    }

    println("=" * 50)
    for (elem <- array1) {
      println(elem)
    }

    println("=" * 50)
    //输出10行hello world
    for (e <- 1 to 10) {
      println("hello world")
    }
    println("=" * 50)
    for (e <- 1 until 10) {
      println("hello world")
    }

    println("=" * 50)
    breakable {
      for (e <- 1 to 10) {
        if(e==5){
          break
        }
        println(e)
      }
    }



  }
}
